
#ifndef	__ACL_DBPOOL_MYSQL_INCLUDE_H__
#define	__ACL_DBPOOL_MYSQL_INCLUDE_H__

#ifdef	__cplusplus
extern "C" {
#endif

#include "stdlib/acl_define.h"
#include "db/acl_dbpool.h"

#ifdef	HAS_MYSQL

/* in acl_dbpool_mysql.c */

/**
 * 创建一个 mysql 类型的数据库连接池, 归acl_dbpool_create调用
 * @param db_info 记录着有关连接数据所需要的信息
 * @return DB_POOL * 返回一个能用的连接池句柄
 */
ACL_DB_POOL *acl_dbpool_mysql_create(const ACL_DB_INFO *db_info);

/**
 * handle状态是ACL_DBH_STATUS_INUSE在操作数据库失败时调用该函数
 *
 * __dbpool_mysql_close(断开连接+归还, ACL_DBH_STATUS_INUSE -> ACL_DBH_STATUS_NULL, mysql_close(mysql_handle->connection), db_pool->db_inuse--)
 * __open_mysql_handle(为状态是ACL_DBH_STATUS_NULL的句柄分配新连接并修改状态是ACL_DBH_STATUS_READY, connection = mysql_init(NULL), ACL_DBH_STATUS_NULL -> ACL_DBH_STATUS_READY, 参数设置)
 * 取出该句柄使用 mysql_handle->handle.status = ACL_DBH_STATUS_INUSE; mysql_handle->handle.parent->db_inuse++;
 *
 * @param handle {ACL_DB_HANDLE*}
 * @return {int} 0: 表示重新打开成功
 */
int sane_mysql_reopen(ACL_DB_HANDLE *handle);

#endif /* HAS_MYSQL */

#ifdef	__cplusplus
}
#endif

#endif
